package com.digitalgeko.hourreporter;

import android.app.*;
import android.content.*;
import android.os.*;
import android.view.*;
import android.widget.*;

import com.digitalgeko.hourreporter.complements.*;
import com.digitalgeko.hourreporter.database.*;
import com.digitalgeko.hourreporter.fragments.MenuFragment;
import com.digitalgeko.hourreporter.objects.*;

import java.util.*;

public class ProyectTaskActivity extends ProyectActivity {

	private LinearLayout proyectList;
	private List<ProyectTaskObject> proyects; 
	
	@Override
	public void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
		setContentView(R.layout.proyects_list);
		initComponents();
		MenuFragment.menuPosition = 1;
	}
	
	private void initComponents(){
		proyectList = (LinearLayout) findViewById(R.id.layoutProyectsList);
		
		proyects = ProyectTaskTableManager.findAllProyects(this);
		
		for(final ProyectTaskObject temp : proyects){
			addProyect(temp);
		}
	}
	
	public void addProyect(View v){
		showAddDialog("" , "");
	}
	
	private void showAddDialog(String name, String description){
		LayoutInflater inflater = LayoutInflater.from(this);
		View convertView = inflater.inflate(R.layout.proyect_task_insert_view, null);
		
		final EditText etNombre = (EditText) convertView.findViewById(R.id.etFastName);
		etNombre.setText(name);
		
		final EditText etDescripcion = (EditText) convertView.findViewById(R.id.etFastDescription);
		etDescripcion.setText(description);
		
		AlertDialog.Builder builder = new AlertDialog.Builder(this);
		builder.setView(convertView);
		
		builder.setPositiveButton("Guardar", new DialogInterface.OnClickListener() {
			public void onClick(DialogInterface dialog, int which) {
				dialog.cancel();
				String valueName = etNombre.getText().toString();
				String valueDes = etDescripcion.getText().toString();
				if((valueName.length() > 0)){
					ProyectTaskObject object = new ProyectTaskObject(valueName, valueDes, null, null);
					if(object.save(ProyectTaskActivity.this)){
						Dialogs.okDialog("proyecto guardado exitosamente", ProyectTaskActivity.this);
						proyects.add(object);
						addProyect(object);
					}else{
						Dialogs.okDialog("No se ha logrado almacenar el proyecto", ProyectTaskActivity.this);
					}
				}else{
					showFailedAdd("Debe Ingresar el nombre del proyecto", valueName, valueDes);
				}
			}
		});
		
		builder.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
			public void onClick(DialogInterface dialog, int which) {
				dialog.cancel();
			}
		});
		
		builder.create().show();
	}
	
	private void showFailedAdd(String message, final String name, final String description){
		AlertDialog.Builder builder = new AlertDialog.Builder(this);
		builder.setMessage(message);
		builder.setNeutralButton("OK", new DialogInterface.OnClickListener(){
			public void onClick(DialogInterface dialog, int which) {
				dialog.cancel();
				showAddDialog(name, description);
			}			
		});		
		builder.create().show();
	}
	
	private void addProyect(final ProyectTaskObject temp){
		final CheckBox statusName;
		
		LayoutInflater inflater = LayoutInflater.from(this);
		final View convertView = inflater.inflate(R.layout.proyect_task_item, null);
		
		statusName = (CheckBox) convertView.findViewById(R.id.cbStatusName);
		statusName.setText(temp.getName());
		statusName.setChecked(temp.isStatus());
		
		statusName.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
			public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
				temp.setStatus(statusName.isChecked());
				if(temp.save(ProyectTaskActivity.this)){
					Dialogs.okDialog("proyecto modificado exitosamente", ProyectTaskActivity.this);
				}else{
					Dialogs.okDialog("proyecto no ha sido modificado", ProyectTaskActivity.this);
				}
			}
		});
		
		((ImageButton) convertView.findViewById(R.id.imageButton)).setOnClickListener(new View.OnClickListener() {
			public void onClick(View v) {
				
			}
		});
		
		proyectList.addView(convertView);
	}
	
}
